 |
Technote 1103
Uniquely Identifying a Mac OS Computer
Mac OS ÉRÉìÉsÉÖÅ[É^ÇÃéØï ï˚ñ@
ÉPÅ[ÉXäOïîÇ…ì\ǡǃdžÇÈÉoÅ[ÉRÅ[ÉhÉâÉxÉãÇ…àÛç¸Ç≥ÇÍǃǢÇÈÉVÉäÉAÉãî‘çÜÇæÇØÇ™ÅAMac OS
ÉxÅ[ÉXÇÃÉRÉìÉsÉÖÅ[É^ÇéØï Ç≈Ç´ÇÈÇÊǧDžǻǡǃǢNjÇ∑ÅBåªç›ÅAîÃîÑÇ≥ÇÍǃǢÇÈ Mac OS ÉRÉìÉsÉÖÅ[É^ÇÃÉçÉWÉbÉNÉ{Å[ÉhÇ…ÇÕÇ«ÇÍLJì‡ïîÉVÉäÉAÉãî‘çÜÇÕñÑÇflçûÇ‹ÇÍǃǢNjÇπÇÒÅBÉIÉyÉåÅ[ÉeÉBÉìÉOÉVÉXÉeÉÄDžLJì‡ïîÉVÉäÉAÉãî‘çÜÇÕdžÇËÇ‹ÇπÇÒÅBñ{ìñÇÃÉVÉäÉAÉãî‘çÜÇ™ñÑÇflçûÇ‹ÇÍÇΩóBàÍÇÃÉRÉìÉsÉÖÅ[É^ÇÕÅAMacintosh
XL Ç≈Ç∑ÅBDZÇÃÉ}ÉVÉìÇ…ÉVÉäÉAÉãî‘çÜǙdžÇÈÇÃÇÕÅADZÇÃÉ}ÉVÉìÇÃÉxÅ[ÉXDžǻǡÇΩ Lisa Ç…ÉVÉäÉAÉãî‘çÜǙdžǡÇΩÇ©ÇÁÇ≈Ç∑ÅBMacintosh
XL ÇÕ 1986 îN 8 åéÇ…êªë¢í‚é~DžǻǡÇΩÇΩÇflÅAåªç›Ç≈ÇÕêîLJè≠Ç»Ç≠ÅAç°ì˙ÇÃésèÍDžǮǢǃÇÕçló∂Ç∑Ç◊Ç´ëŒè€ÇΔÇÕÇ»ÇÁǻǢÇ≈ǵÇÂǧÅB
Mac OS ÉRÉìÉsÉÖÅ[É^ÇÃàÍïîÇÃÉÇÉfÉãÇ…ÇÕÅAÉVÉäÉAÉãî‘çÜÇΔǵǃégópÇ≈Ç´ÇÈéØï î‘çÜÇéùǬÉnÅ[ÉhÉEÉFÉAÉfÉoÉCÉXÇ™ä‹Ç‹ÇÍǃǢNjÇ∑ÅBÇΩÇΔǶnjÅAÉ}ÉVÉìÇ…ÉCÉìÉXÉgÅ[ÉãÇ≥ÇÍǃǢÇÈÇ©ÅAì‡ë†Ç≥ÇÍÇΩÉCÅ[ÉTÉlÉbÉgÉJÅ[ÉhÇ≈Ç∑ÅB
(ÉCÅ[ÉTÉlÉbÉgÉfÉoÉCÉXÇ…ÇÕÉfÉoÉCÉXÇ≤ÇΔÇ…ÉÜÉjÅ[ÉNÇ» ID ǙdžÇÈÇΩÇflÇ≈Ç∑ÅB) ÉnÅ[ÉhÉfÉBÉXÉNÉhÉâÉCÉuÇÃǻǩDžÇÕÅAÇ∑Ç◊ǃÇ≈ÇÕdžÇËÇ‹ÇπÇÒÇ™ÅASCSI
Manager Ç‹ÇΩÇÕ ATA Manager Ç≈ì«Ç›èoÇπÇÈÉVÉäÉAÉãî‘çÜÇéùǬLJÇÃLJdžÇËÇ‹Ç∑ÅBÉgÅ[ÉNÉìÉäÉìÉOÉJÅ[ÉhÇ‚
FireWire DžLJÅAÉVÉäÉAÉãî‘çÜÇΔǵǃégópâ¬î\Ç»ÉÜÉjÅ[ÉNÇ»éØï î‘çÜÇéùǬLJÇÃǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÁÇÃÉnÅ[ÉhÉEÉFÉAÉfÉoÉCÉXÇÃíÜÇ≈ÅAMacintosh
ÇÃëSêªïiÉâÉCÉìÇ≈ã§í ǻLJÇÃÇÕdžÇËÇ‹ÇπÇÒÅB
ÇŸÇ⁄ÉÜÉjÅ[ÉNÇ»ì¡ê´
É\ÉtÉgÉEÉFÉAÇ™ÅAà»ëOÇΔìØÇ∂É}ÉVÉìÇ≈ìÆçÏǵǃǢÇÈǩǫǧǩÇîªífÇ∑ÇÈéëóøÇΔÇ»ÇÈÅuÇŸÇ⁄ÉÜÉjÅ[ÉNÅvÇΔǢǶÇÈÇÊǧǻì¡ê´Ç‡Ç†ÇËÇ‹Ç∑ÅBDZÇÍÇÁÇóLå¯Ç»Ç‡ÇÃÇ©ÇÁèáÇ…à»â∫Ç…óÒãìǵNjÇ∑ÅB
ÉtÉ@ÉCÉã ID ÉäÉtÉ@ÉåÉìÉX
ÉAÉvÉäÉPÅ[ÉVÉáÉìÉtÉ@ÉCÉãÇÃÉtÉ@ÉCÉã
ID ÉäÉtÉ@ÉåÉìÉXÇçÏê¨ÇµÅAï€ë∂Ç∑ÇÈï˚ñ@Ç≈Ç∑ÅBÉtÉ@ÉCÉã ID ÉäÉtÉ@ÉåÉìÉXÇÕÅAPBCreateFileIDRef()
Ç≈çÏê¨ÇµÅAìKêÿÇ»èÍèäÇ…ï€ë∂ǵNjÇ∑ÅB (ï€ë∂Ç…ìKǵÇΩèÍèäÇÃó·ÇΔǵǃÇÕÅAèâä˙ê›íËÉtÉ@ÉCÉãǙdžÇËÇ‹Ç∑ÅBï€ë∂Ç…ìKÇ≥ǻǢèÍèäÇÃó·ÇÕÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉäÉ\Å[ÉXÉtÉHÅ[ÉNÇ≈Ç∑ÅBDZÇÍÇæÇΔÉçÉbÉNÇ≥ÇÍÇΩÉÅÉfÉBÉAÇ‚ÉlÉbÉgÉèÅ[ÉNÉTÅ[ÉoÇ©ÇÁÉAÉvÉäÉPÅ[ÉVÉáÉìÇãNìÆÇ∑ÇÈèÍçáÇ…ÇÕóòópÇ≈Ç´Ç‹ÇπÇÒÅB)
ǪÇÃÉtÉ@ÉCÉã ID ÉäÉtÉ@ÉåÉìÉXÇÅAìÆçÏíÜÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÉtÉ@ÉCÉã ID ÉäÉtÉ@ÉåÉìÉX
(ÉtÉ@ÉCÉã ID ÉäÉtÉ@ÉåÉìÉXÇÕ PBGetCatInfo Ç™ï‘Ç∑ ioFileID
ÉtÉBÅ[ÉãÉhDždžÇËÇ‹Ç∑) ÇΔî‰ärǵNjÇ∑ÅBDZÇÍÇ™à·Ç¡ÇƒÇ¢ÇÍÇŒÅAï ÇÃÉ{ÉäÉÖÅ[ÉÄÇ≈ìÆçÏǵǃǢÇÈDZÇΔÇ™ÇÌÇ©ÇËÇ‹Ç∑ÅBÉtÉ@ÉCÉã
ID ÉäÉtÉ@ÉåÉìÉXÇÕì¡íËÇÃÉ{ÉäÉÖÅ[ÉÄì‡Ç≈ÇÕÉÜÉjÅ[ÉNÇ≈Ç∑ÅBçƒóòópÇ≥ÇÍÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅBï ÇÃÉ}ÉVÉìÇ≈ìØÇ∂ÉtÉ@ÉCÉãÇ…ìØÇ∂ÉtÉ@ÉCÉã
ID ÉäÉtÉ@ÉåÉìÉXÇ™äÑÇËìñǃÇÁÇÍÇÈâ¬î\ê´ÇÕîÒèÌÇ…è≠ǻǢÇ≈Ç∑ÅB
// AddFileID ÇÕ FSSpec Ç≈éwíËÇ≥ÇÍÇΩÉtÉ@ÉCÉãÇÃ
// ÉtÉ@ÉCÉã ID ÉäÉtÉ@ÉåÉìÉXÇçÏê¨ÇµÇ‹Ç∑ÅB
// DZÇÃä÷êîÇ™ï‘Ç∑ÉtÉ@ÉCÉã ID ÉäÉtÉ@ÉåÉìÉXÇÕÅA
// å„Ç≈égópÇ∑ÇÈÇΩÇflÇ…ï€ë∂ǵǃǮǴNjÇ∑ÅB
//
OSErr AddFileID(FSSpec *file, long *fileID)
{
OSErr err;
HParmBlkPtr h;
h = (HParmBlkPtr)NewPtrClear(sizeof(HParamBlockRec));
h->fidParam.ioCompletion = nil;
h->fidParam.ioNamePtr = file->name;
h->fidParam.ioVRefNum = file->vRefNum;
h->fidParam.ioSrcDirID = file->parID;
err = PBCreateFileIDRefSync(h);
*fileID = h->fidParam.ioFileID;
DisposePtr((void *)h);
return(err);
}
// GetFileID ÇÕÅAâflãéÇ… (PBCreateFileIDRef ÇåƒÇ—èoǵǃ)
// ÉtÉ@ÉCÉã ID ÉäÉtÉ@ÉåÉìÉXÇçÏê¨ÇµÇΩDZÇΔÇÃdžÇÈ
// ÉtÉ@ÉCÉãÇ™éùǬÅAÉtÉ@ÉCÉã ID ÉäÉtÉ@ÉåÉìÉXÇï‘ǵNjÇ∑ÅB
//
OSErr GetFileID(FSSpec *file, long *fileID)
{
OSErr err;
CInfoPBPtr cInfo;
cInfo = (CInfoPBPtr)NewPtrClear(sizeof(CInfoPBRec));
cInfo->hFileInfo.ioCompletion = nil;
cInfo->hFileInfo.ioNamePtr = file->name;
cInfo->hFileInfo.ioVRefNum = file->vRefNum;
cInfo->hFileInfo.ioFDirIndex = 0;
cInfo->hFileInfo.ioDirID = file->parID;
err = PBGetCatInfoSync(cInfo);
*fileID = cInfo->hFileInfo.ioDirID;
DisposePtr((void *)cInfo);
return(err);
}
|
Gestalt
Gestalt Manager ÇÕÅAÉ}ÉVÉìÇì¡íËÇ∑ÇÈÇÃÇ…ñóßǬÅAëΩÇ≠ÇÃèÓïÒÇ÷ÇÃÉAÉNÉZÉXÇâ¬î\DžǵNjÇ∑ÅBǪÇÃÇÊǧǻèÓïÒÇÃíÜÇ≈å∞íòǻLJÇÃÇÕÅAÉ}ÉVÉìÉ^ÉCÉv
(gestaltMachineType ÉZÉåÉNÉ^Ç≈ï\Ç≥ÇÍÇ‹Ç∑) ÇΔê⁄ë±Ç≥ÇÍǃǢÇÈÉLÅ[É{Å[ÉhÇÃéÌófi
(gestaltKeyboardType ÉZÉåÉNÉ^Ç≈ï\Ç≥ÇÍÇ‹Ç∑) Ç≈Ç∑ÅB
OSErr GetMachineAndKeyboardIDs(long *characteristics)
{
long response;
OSErr err;
err = Gestalt(gestaltMachineType, &response);
*characteristics = response << 16;
if (!err)
err = Gestalt(gestaltKeyboardType, &response);
*characteristics |= response;
return err;
}
|
ÉVÉXÉeÉÄÉ\ÉtÉgÉEÉFÉAÇÃâ¸î≈Ç…ÇÊǡǃÅAGestalt ÇÃÉZÉåÉNÉ^Ç…ó\ä˙ÇπÇ ïœçXÇ™â¡Ç¶ÇÁÇÍÇÈèÍçáLJdžÇÈDZÇΔÇ…íçà”ǵǃÇ≠ÇæÇ≥Ç¢ÅB
ÉCÅ[ÉTÉlÉbÉgÉAÉhÉåÉX
ÉCÅ[ÉTÉlÉbÉgÉJÅ[ÉhÇ™ÉCÉìÉXÉgÅ[ÉãÇ≥ÇÍǃǢÇÈÇ©ÅAÇ‹ÇΩÇÕì‡ë†Ç≥ÇÍǃǢÇÈ Mac OS ÉRÉìÉsÉÖÅ[É^Ç≈ÇÕÅAcsCode
Ç ENetGetInfo Ç…ê›íËǵǃ EGetInfo() ÇåƒÇ—èoÇ∑DZÇΔÇ≈ÅAåªç›äÑÇËìñǃÇÁÇÍǃǢÇÈÉCÅ[ÉTÉlÉbÉgÉAÉhÉåÉXÇ™éÊìæÇ≈Ç´Ç‹Ç∑ÅBè⁄ç◊ÇÕÅwInside
Macintosh: NetworkingÅx (11-26
ÉyÅ[ÉWÇ®ÇÊÇ—
11-36 ÉyÅ[ÉW) ÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅBÉAÉbÉvÉãé–Ç≈ÇÕÅAOpen
Transport ä¬ã´Ç≈ÉCÅ[ÉTÉlÉbÉgÉAÉhÉåÉXÇéÊìæÇ∑ÇÈÉTÉìÉvÉãÉRÅ[ÉhÇåˆäJǵǃǢNjÇ∑ÅB
DZÇÃãZñ@ÇÃñ‚ëËÇÕÅAÉfÉtÉHÉãÉgÇÃÉCÅ[ÉTÉlÉbÉgÉAÉhÉåÉXÇ™ÅAÉVÉXÉeÉÄÉtÉ@ÉCÉãì‡Çà 'eadr'
É^ÉCÉvÇÃÉäÉ\Å[ÉXÇ≈íuÇ´ä∑ǶÇÃê›íËÇ™Ç≥ÇÍǃǢÇÈDZÇΔǙdžÇÈÇΔǢǧDZÇΔÇ≈Ç∑ÅBDZÇÍÇÕÅAÅwInside
Macintosh: NetworkingÅx(11-26
ÉyÅ[ÉW) Ç…èëÇ©ÇÍǃǢNjÇ∑ÅBÉnÅ[ÉhÉEÉFÉAÉAÉhÉåÉXÇ™ïœçXâ¬î\ǻDZÇΔÅAì¡íËÇÃÉÇÉfÉãÇ…ÇÕïKÇ∏ÉCÅ[ÉTÉlÉbÉgǙdžÇÈÇΔǢǧï€èÿLJǻǢDZÇΔÇ©ÇÁÅADZÇÍÇÕǢǢï˚ñ@Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅB
ìØólÇÃãZñ@ÇÕÅAÉgÅ[ÉNÉìÉäÉìÉOÉJÅ[ÉhǂǪÇÃëºÇÃÉJÅ[ÉhÇ™ïtÇ¢ÇΩ Mac OS ÉRÉìÉsÉÖÅ[É^Ç≈LJégópÇ≈Ç´Ç‹Ç∑Ç™ÅADZÇÃï∂èëÇ≈ÇÕê‡ñæÇµÇ‹ÇπÇÒÅB
ÉnÅ[ÉhÉfÉBÉXÉNÇÃÉVÉäÉAÉãî‘çÜ
ÉnÅ[ÉhÉfÉBÉXÉNÇ…ÉVÉäÉAÉãî‘çÜÇ™ïtÇ¢ÇΩLJÇÃLJdžÇËÇ‹Ç∑ÅBATA/IDE ÉhÉâÉCÉuÇÃëΩÇ≠Ç…ÇÕÉVÉäÉAÉãî‘çÜǙdžÇËÇ‹Ç∑Ç™ÅASCSI
ÉnÅ[ÉhÉfÉBÉXÉNÇ…ÇÕÇΩǢǃǢdžÇËÇ‹ÇπÇÒÅBÉAÉbÉvÉãÇÕÅAATA Ç‹ÇΩÇÕ IDE ÉhÉâÉCÉuÇÃÉVÉäÉAÉãî‘çÜÇéÊìæÇ∑ÇÈÉTÉìÉvÉãÉRÅ[ÉhÇåˆäJǵǃǢNjÇ∑ÅBATA
Ç‚ IDE ÉhÉâÉCÉuÇ™ïtǢǃǢÇÈÇÃÇÕàÍïîÇà Macintosh Ç»ÇÃÇ≈ÅADZÇÍÇÕîƒópìIÇ…égǶÇÈÇÊǧǻó«Ç¢ï˚ñ@Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅB
SCSI ÇÃåáä◊ÉäÉXÉg
SCSI ÉhÉâÉCÉuÇÃåáä◊ÉäÉXÉgÇégǧÉfÉxÉçÉbÉpLJǢNjÇ∑ÅBDZÇÍÇÕ SCSI ÇÃǻǢÉ}ÉVÉìÇ≈ÇÕìÆÇ´Ç‹ÇπÇÒÇ™ÅASCSI
ïtÇ´ÇÃÉ}ÉVÉìÇ≈ÇÕǢǢï˚ñ@ǩLJǵÇÍÇ‹ÇπÇÒÅBSCSI Manager ÇÃégópï˚ñ@ÇÃè⁄ç◊DžǬǢǃÇÕÅAÅwSCSI-2 SpecificationÅxÇ®ÇÊÇ—ÅwInside
Macintosh:DevicesÅxÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅBÅwTool Chest Developer CDÅxÇ…ÇÕÅASCSI
Manager ÇÃàÍî ìIÇ»égópï˚ñ@Çé¶Ç∑É\Å[ÉXÉRÅ[ÉhÇ™ä‹Ç‹ÇÍǃǢNjÇ∑ÅBSCSI Ç™ïtǢǃǢÇÈÇÃÇÕàÍïîÇÃ
Macintosh Ç»ÇÃÇ≈ÅADZÇÍÇÕîƒópñ⁄ìIÇ≈égǶÇÈÇÊǧǻó«Ç¢ï˚ñ@Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅB
ÉVÉXÉeÉÄÉtÉHÉãÉ_ÇÃÉfÉBÉåÉNÉgÉä
ID
ÉVÉXÉeÉÄÉtÉHÉãÉ_Çà dirID Çî‰ärÇ∑ÇÈï˚ñ@Ç≈Ç∑ÅBFindFolder()
ÇégǡǃÅAÉVÉXÉeÉÄÉtÉHÉãÉ_Çà dirID ÇÕéÊìæÇµÇƒÅAà»ëOï€ë∂ǵǃǮǢÇΩ dirID
ÇΔî‰ärǵNjÇ∑ÅBDZÇÍÇÕÉtÉ@ÉCÉã ID ÇŸÇ«ÉÜÉjÅ[ÉNÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÉVÉXÉeÉÄÉtÉHÉãÉ_ÇÕÇ«ÇÃÉ}ÉVÉìÇ≈LJÇÕÇ∂ÇflÇ©ÇÁçÏê¨Ç≥ÇÍǃǢÇÈLJÇÃÇ»ÇÃÇ≈ÅAÉ}ÉVÉìÇ™à·Ç¡ÇƒÇ‡ìØÇ∂ÉfÉBÉåÉNÉgÉä
ID ÇéùǬDZÇΔÇ™ëΩÇ¢ÇÃÇ≈Ç∑ÅBÉÜÅ[ÉUÇ™êVǵǢÉVÉXÉeÉÄÉtÉHÉãÉ_ÇçÏê¨Ç∑ÇÈÇΔ (ÉAÉbÉvÉOÉåÅ[ÉhÇÃç€Ç…ÅAÉVÉXÉeÉÄÉ\ÉtÉgÉEÉFÉAÇÉCÉìÉXÉgÅ[ÉãǵíºÇµÇΩÇΔǴǻǫ)
ÅAà·Ç§ÉfÉBÉåÉNÉgÉä ID DžǻǡǃǵNjǢNjÇ∑ÅBDZÇÍÇÕÇÊÇ¢ï˚ñ@Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅB
// GetVolumeDirID ÇÕÉVÉXÉeÉÄÉtÉHÉãÉ_Çà dirID Çï‘ǵNjÇ∑ÅB
//
OSErr GetVolumeDirID(long *dirID)
{
OSErr err;
short notUsed;
err=FindFolder(kOnSystemDisk, kSystemFolderType, no,
notUsed,dirID);
return(err);
}
|
É{ÉäÉÖÅ[ÉÄçÏê¨ì˙
É{ÉäÉÖÅ[ÉÄÇÃçÏê¨ì˙Çî‰ärÇ∑ÇÈï˚ñ@Ç≈Ç∑ÅBDZÇÃèÓïÒÇÕ PBHGetVInfo() ÇégǡǃéÊìæÇ≈Ç´Ç‹Ç∑ÅBDZÇÍÇÕÉtÉ@ÉCÉã
ID ÇŸÇ«ÉÜÉjÅ[ÉNÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÉ{ÉäÉÖÅ[ÉÄçÏê¨ì˙ÇÕÅAçHèÍÇ≈ÉVÉXÉeÉÄÉ\ÉtÉgÉEÉFÉAÇ™É{ÉäÉÖÅ[ÉÄÇ…ì¸ÇÍÇÁÇÍÇÈéûÇ…ê›íËÇ≥ÇÍÅAÉ{ÉäÉÖÅ[ÉÄÇçƒèâä˙âªÇ∑ÇÈÇΔǴDžǵǩÉäÉZÉbÉgÇ≥ÇÍǻǢǩÇÁÇ≈Ç∑ÅBDZÇÃílÇÕàÍòAÇÃÉ}ÉVÉìÇ≈ìØÇ∂Ç…Ç»ÇÈåXå¸Ç™Ç†ÇÈÇÃÇ≈ÅAÇÊÇ¢ï˚ñ@Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅB
long GetVolCreationDate(short vRefNum )
{
OSErr err = noErr;
HParamBlockRec pb;
Str255 vName;
vName [ 0 ] = '\0';
pb.volumeParam.ioCompletion = nil;
pb.volumeParam.ioNamePtr = vName;
pb.volumeParam.ioVRefNum = vRefNum;
pb.volumeParam.ioVolIndex = 0;
err = PBHGetVInfoSync ( &pb );
return ( pb.volumeParam.ioVCrDat);
}
|
ÉlÉbÉgÉèÅ[ÉNÇ÷ÇÃìoò^
Macintosh Çì¡íËÇ∑ÇÈÇÃÇ≈ÇÕÇ»Ç≠ÅAìØÇ∂ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃï°êîÇÃÉRÉsÅ[Ç™ìØÇ∂ÉlÉbÉgÉèÅ[ÉNÇ≈ìÆçÏÇ∑ÇÈDZÇΔÇîÇØÇÈï˚ñ@LJdžÇËÇ‹Ç∑ÅBàÍïîÇÃÉfÉxÉçÉbÉpÇ™égǧï˚ñ@ÇÕÅANBP
(Name Binding Protocol) Ç≈âÀãÛÇÃÉfÉoÉCÉXÇÉlÉbÉgÉèÅ[ÉNÇ…ìoò^Ç∑ÇÈLJÇÃÇ≈ÅAǪÇÃñºëOÇ…ÇÕÅAäYìñÇÃÉâÉCÉZÉìÉXDždžÇΩÇÈíPàÍÇÃÉVÉäÉAÉãî‘çÜÇégǢNjÇ∑ÅB
(Ç‡ÇøÇÎÇÒDZÇÃÉVÉäÉAÉãî‘çÜÇê∂ê¨Ç∑ÇÈï˚ñ@ÇÕïKóvÇ≈Ç∑ÅB) ìØÇ∂ÉfÉoÉCÉXÇΔÉVÉäÉAÉãî‘çÜÇï°êîâÒìoò^ǵÇÊǧÇΔÇ∑ÇÈÇΔÅAÉGÉâÅ[Ç™î≠ê∂Ç∑ÇÈÇÃÇ≈ÅAÉvÉçÉOÉâÉÄÇÕǪÇÃégópÇãëî€Ç∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅBNBP
ÇÃè⁄ç◊ÇÕÅwInside
Macintosh: NetworkingÅxÇÃëÊ
3 èÕDždžÇËÇ‹Ç∑ÅB
/*
* éwíËÇÃÉ\ÉPÉbÉgÇ…ëŒÇµÇƒÅAéwíËÇÃÉIÉuÉWÉFÉNÉgÇΔÉ^ÉCÉvÇéùǬ
* ÉGÉìÉeÉBÉeÉBÇìoò^ǵNjÇ∑ÅBä÷êîÇ™ noErr Çï‘ǵÇΩèÍçáÇÕÅA
* NamesTableEntry Ç÷ÇÃÉ|ÉCÉìÉ^Ç™ ntePtr Ç…ï‘Ç≥ÇÍǃǢNjÇ∑ÅB
*/
OSErr MyRegisterName(ConstStr32Param entityObject,
ConstStr32Param entityType,
short socket,
NamesTableEntry **ntePtr)
{
MPPParamBlock mppPB;
OSErr result;
Str32 entityZone = "\p*";
/* ÉlÅ[ÉÄÉeÅ[ÉuÉãÇÃÉGÉìÉeÉBÉeÉBÇäiî[Ç∑ÇÈçƒîzíuïsî\Ç»ÉÅÉÇÉäÇ
* ÉVÉXÉeÉÄÉqÅ[ÉvÇ…äÑÇËìñǃNjÇ∑ÅB
*/
*ntePtr = (NamesTableEntry *)
NewPtrSys((Size)sizeof(NamesTableEntry));
if ( ntePtr == NULL )
{
result = MemError(); /* ÉÅÉÇÉäÉGÉâÅ[Çï‘Ç∑ */
}
else
{
/* ÉlÅ[ÉÄÉeÅ[ÉuÉãÇÃÉGÉìÉeÉBÉeÉBÇçÏê¨Ç∑ÇÈ */
NBPSetNTE((Ptr) *ntePtr,
(Ptr) entityObject,
(Ptr) entityType,
(Ptr) entityZone,
socket);
/* ioRefNum ÇΔ csCode ÇÕ PRegisterName ÇÃÉOÉãÅ[Ç…ÇÊǡǃ
ê›íËÇ≥ÇÍÇ‹Ç∑ */
mppPB.NBPinterval = 0x0f; /* ä‘äuÇΔâÒêîÇìKêÿÇ»ílÇ… */
mppPB.NBPcount = 0x03; /* ê›íËǵNjÇ∑ */
mppPB.NBPentityPtr = (Ptr) *ntePtr;
mppPB.NBPverifyFlag = (char) true; /* ÉÜÉjÅ[ÉNÇ»ñºëO */
result = PRegisterName(&mppPB, false);
if ( result != noErr )
DisposePtr((Ptr) *ntePtr);
}
return ( result );
}
|
íçà”:
DTS ÇÕÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇ™ÉCÉìÉ^Å[ÉlÉbÉgëSëÃÇ≈ÉGÉìÉeÉBÉeÉBÇÃåüçıÇçsǧDZÇΔÇÕêÑèßǵNjÇπÇÒÅBDZÇÃÇÊǧǻåüçıÇÕéûä‘ǙǩǩÇÈÇ©ÇÁÇ≈Ç∑ÅBÇΩÇ≠Ç≥ÇÒÇÃÉ]Å[ÉìÇéùǬëÂÇ´Ç»ÉlÉbÉgÉèÅ[ÉNÇ≈ÇÕÅAåüçıÇÃÇΩÇflDžǩǻÇËÇÃéûä‘ÇîÔÇ‚Ç∑DZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅBãNìÆéûÇÃÉRÅ[ÉhÇ≈çsǧèàóùÇΔǵǃÇÕìKêÿÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÇ©ÇÌÇËÇ…ÅAÉçÅ[ÉJÉãÉ]Å[ÉìÇåüçıÇ∑ÇÈDZÇΔÇÇ®Ç∑Ç∑ÇflǵNjÇ∑ÅBïKóvÇ»ÇÁÅAëºÇÃÉ]Å[ÉìÇ…ëŒÇ∑ÇÈåüçıÇÕÅAîÒìØä˙ÇÃÉoÉbÉNÉOÉâÉEÉìÉhèàóùÇΔǵǃé¿åªÇ∑ÇÈÇÃÇ™ÇÊÇ¢Ç≈ǵÇÂǧÅB |
Ç∑Ç◊Ç´Ç≈ÇÕǻǢDZÇΔ
ägí£ÉpÉâÉÅÅ[É^ RAM (PRAM) ÇÃÇ§ÇøÅAï∂èëâªÇ≥ÇÍǃǢǻǢílÇ…óäǡǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅBÉAÉbÉvÉãÇÕ
PRAM ÇÃàÍïîÇåˆäJǵǃǢÇÈÇæÇØÇ≈ÅAëºÇÃïîï™ÇÕåˆäJǵǃǢNjÇπÇÒÅBè⁄ç◊DžǬǢǃÇÕÅAÅwInside
Macintosh:Operating System UtilitiesÅxÇÃëÊ
7 èÕÇéQèΔǵǃÇ≠ÇæÇ≥Ç¢ÅBÉAÉbÉvÉãÇÕñ¢åˆäJÇà PRAM ÇÃà”ñ°ÇïœçXÇ∑ÇÈå†óòÇóØï€ÇµÇƒÇ¢Ç‹Ç∑ÅBPRAM
ÇÃåˆäJóÃàÊà»äOÇ…èÓïÒÇï€ë∂Ç∑ÇÈDZÇΔÇÕÇ‚ÇflǃÇ≠ÇæÇ≥Ç¢ÅBDZÇÃÇÊǧǻ PRAM ÇÃåÎópÇÕÉVÉXÉeÉÄÇÃà¿íËê´Ç…èdëÂÇ»âeãøÇÇ®ÇÊÇ⁄Ç∑DZÇΔÇ…Ç»ÇËÇ‹Ç∑ÅB
ÉtÉHÅ[É}ÉbÉgǵÇΩÉtÉçÉbÉsÅ[Ç‚ì¡éÍÇ»ÉtÉçÉbÉsÅ[ÇÃì¡éÍÇ»ÉgÉâÉbÉNÇégǧï˚ñ@LJǮÇ∑Ç∑ÇflÇ≈Ç´Ç‹ÇπÇÒÅBÉAÉbÉvÉãÇÕÅADZÇÃÇÊǧǻópìrÇ…
DTS Ç™ÉTÉ|Å[ÉgÇ≈Ç´ÇÈÇÊǧǻÉtÉçÉbÉsÅ[ÉhÉâÉCÉuÇÃèÓïÒÇíÒãüǵǃÇÕǢNjÇπÇÒÅBÇ‹ÇΩÅADiskCopy
ǻǫÇÃÉfÉBÉXÉNÉRÉsÅ[ÉvÉçÉOÉâÉÄÇÕÅAîÒèÌDžǧNjÇ≠ìÆçÏǵÅAǪÇÃÇÊǧǻãZñ@ÇîjǡǃǵNjǢNjÇ∑ÅB
(DiskCopy ÇÕÅAÉtÉçÉbÉsÅ[ÉhÉâÉCÉoÇÃÉ\Å[ÉXÉRÅ[ÉhÇå©Ç»Ç™ÇÁÅAÉAÉbÉvÉãì‡ïîÇ≈èëÇ©ÇÍÇΩLJÇÃÇ≈Ç∑ÅBè⁄ç◊ÇäOïîÇ…åˆäJÇ∑ÇÈó\íËÇÕdžÇËÇ‹ÇπÇÒÅB)
ÉnÅ[ÉhÉfÉBÉXÉNÇÃì¡éÍÇ»ÉZÉNÉ^Ç…óäÇÈDZÇΔÇ‡Ç¢ÇØÇ‹ÇπÇÒ (ÉAÉbÉvÉãÇÕï°êîÇÃÉxÉìÉ_Ç©ÇÁïîïiÇçwì¸ÇµÇƒÇ¢Ç‹Ç∑ÅBì¡íËÇÃÉ}ÉVÉìÇ‚ì¡íËÇÃÉÇÉfÉãÇÃñ¢åˆäJïîï™Ç…ǬǢǃâΩÇÁÇ©ÇÃâºíËÇǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅB)
íçà”:
è´óàÇÃdžÇÈéûä˙DžǮǢǃÅAÉAÉbÉvÉãÇÕ 800K GCR ÉtÉHÅ[É}ÉbÉgÇÃÉtÉçÉbÉsÅ[ÇÉTÉ|Å[ÉgǵǻǢÉ}ÉVÉìÇêªë¢Ç∑ÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑ÅBMac
OS ÉRÉìÉsÉÖÅ[É^ÇÃéØï ÇÃñ⁄ìIÇ≈ÅA800K GCR ÉtÉHÅ[É}ÉbÉgǻǫÅAì¡íËÇÃÉnÅ[ÉhÉEÉFÉAã@î\Ç…óäÇÈÇ◊Ç´Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅB |
åãò_
DZDZÇ≈èqÇ◊ÇΩãZñ@ÇÕÅAÉRÉìÉsÉÖÅ[É^ÇÃéØï Ç…ñóßǬä»íPÇ»ï˚ñ@Ç≈Ç∑ÅBDZÇÍÇÁÇÃãZñ@ÇÕíPèÉÇ»ÉRÉsÅ[ÉvÉçÉeÉNÉgÇ…ÇÕï÷óòǩLJǵÇÍÇ‹ÇπÇÒÅBñ{äiìIÇ»ÉRÉsÅ[ÉvÉçÉeÉNÉgÇÃÇΩÇflÇÃÇÊÇËï°éGÇ»ãZñ@LJÇΩÇ≠Ç≥ÇÒdžÇËÇ‹Ç∑ÅBÇΩÇΔǶnjÅAADB
ÉfÉoÉCÉXǻǫÇÃäOïîÉnÅ[ÉhÉEÉFÉAÇÅAÉâÉCÉZÉìÉXçœÇ›ÇÃÉ}ÉVÉìÇéØï Ç∑ÇÈëïíu (ÉnÅ[ÉhÉLÅ[ÇΔåƒÇŒÇÍÇ‹Ç∑)
ÇΔǵǃégǧǻǫÅAÇÊÇ¢ï˚ñ@ǙdžÇËÇ‹Ç∑ÅBñ{äiìIÇ»ÉRÉsÅ[ÉvÉçÉeÉNÉgÇçsǧèÍçáÇÕÅAé©ï™Ç≈çÏê¨Ç∑ÇÈÇÃÇ≈ÇÕÇ»Ç≠ÅAÉRÉsÅ[ÉvÉçÉeÉNÉgÇêÍñÂÇ…Ç∑ÇÈâÔé–Ç™ÇΩÇ≠Ç≥ÇÒdžÇËÇ‹Ç∑ÇÃÇ≈ÅAñ‚Ç¢çáÇÌÇπǃǛǃÇ≠ÇæÇ≥Ç¢ÅBëΩÇ≠ÇÃÉTÅ[ÉhÉpÅ[ÉeÉBÇ™ÅAÉnÅ[ÉhÉEÉFÉAÇégǧêªïi
(ADB ÇÃÉnÅ[ÉhÉLÅ[ǻǫ) Ç‚ÅAÉ\ÉtÉgÉEÉFÉAÇégǧêªïi (ÉâÉCÉZÉìÉVÉìÉOÉ\ÉtÉgÉEÉFÉA) ÇíÒãüǵǃǢNjÇ∑ÅB
Ç‹ÇΔÇfl
Mac OS ÇÕÉRÉsÅ[ÉvÉçÉeÉNÉgÇçló∂Ç…ì¸ÇÍǃê›åvÇ≥ÇÍǃÇÕǢNjÇπÇÒÅBMac OS ÉxÅ[ÉXÇÃÉRÉìÉsÉÖÅ[É^ÇÃÇ∑Ç◊ǃÇÃÉÇÉfÉãÇ≈ã§í Ç…óòópâ¬î\Ç»ÉVÉäÉAÉãî‘çÜLJdžÇËÇ‹ÇπÇÒÅBï°êîÇÃ
Mac OS ÉRÉìÉsÉÖÅ[É^ÇéØï Ç∑ÇÈãZñ@ǙǢÇ≠ǬǩdžÇËÅADZÇà TECHNOTE Ç≈ÇÕǪÇÃãZñ@Çâê‡ÇµÇ‹ÇµÇΩÅB
DTS ÇÕÅAÉRÉsÅ[ÉvÉçÉeÉNÉgÇÉTÉ|Å[ÉgǵNjÇπÇÒÅBå›ä∑ê´Ç…ä÷ÇÌÇÈñ‚ëËÇ™ëÂǴǢǩÇÁÇ≈Ç∑ÅBDTS
ÇÕÅAÉRÉsÅ[ÉvÉçÉeÉNÉgãZñ@ÇèWÇflǃǢÇÈÇÌÇØÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅB
|